package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 原材料基础信息对象 raw_material
 *
 * @author ruoyi
 * @date 2025-05-24
 */
public class RawMaterial extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 原材料唯一标识符(主键) */
    private Long id;

    /** 原材料名称(如"高筋面粉50kg装") */
    @Excel(name = "原材料名称")
    private String materialName;

    /** 原材料分类(如"谷物类"、"添加剂") */
    @Excel(name = "原材料分类")
    private String materialCategory;

    /** 原材料简写(如"HGFlour") */
    @Excel(name = "原材料简写")
    private String materialAbbr;

    /** 计量单位(如"千克"、"袋"、"升") */
    @Excel(name = "计量单位")
    private String unit;

    /** 规格型号(如"50kg/袋，保质期12个月") */
    @Excel(name = "规格型号")
    private String specification;

    /** 是否支持称重(0:按固定单位,1:可称重) */
    @Excel(name = "是否支持称重(0:按固定单位,1:可称重)")
    private Integer isWeighable;

    /** 默认供应商ID(关联供应商表) */
    @Excel(name = "默认供应商ID(关联供应商表)")
    private Long supplierId;

    /** 最小采购量(如100千克) */
    @Excel(name = "最小采购量(如100千克)")
    private BigDecimal minOrderQuantity;

    /** 采购提前期(天) */
    @Excel(name = "采购提前期(天)")
    private Long leadTimeDays;

    /** 状态 */
    @Excel(name = "状态")
    private String status;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date addTime;

    /** 最后更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastUpdateTime;

    /** 操作员工(创建/修改人) */
    @Excel(name = "操作员工(创建/修改人)")
    private String operator;

    /** 手机号 */
    @Excel(name = "手机号")
    private String phone;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setMaterialName(String materialName)
    {
        this.materialName = materialName;
    }

    public String getMaterialName()
    {
        return materialName;
    }

    public void setMaterialCategory(String materialCategory)
    {
        this.materialCategory = materialCategory;
    }

    public String getMaterialCategory()
    {
        return materialCategory;
    }

    public void setMaterialAbbr(String materialAbbr)
    {
        this.materialAbbr = materialAbbr;
    }

    public String getMaterialAbbr()
    {
        return materialAbbr;
    }

    public void setUnit(String unit)
    {
        this.unit = unit;
    }

    public String getUnit()
    {
        return unit;
    }

    public void setSpecification(String specification)
    {
        this.specification = specification;
    }

    public String getSpecification()
    {
        return specification;
    }

    public void setIsWeighable(Integer isWeighable)
    {
        this.isWeighable = isWeighable;
    }

    public Integer getIsWeighable()
    {
        return isWeighable;
    }

    public void setSupplierId(Long supplierId)
    {
        this.supplierId = supplierId;
    }

    public Long getSupplierId()
    {
        return supplierId;
    }

    public void setMinOrderQuantity(BigDecimal minOrderQuantity)
    {
        this.minOrderQuantity = minOrderQuantity;
    }

    public BigDecimal getMinOrderQuantity()
    {
        return minOrderQuantity;
    }

    public void setLeadTimeDays(Long leadTimeDays)
    {
        this.leadTimeDays = leadTimeDays;
    }

    public Long getLeadTimeDays()
    {
        return leadTimeDays;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }

    public void setAddTime(Date addTime)
    {
        this.addTime = addTime;
    }

    public Date getAddTime()
    {
        return addTime;
    }

    public void setLastUpdateTime(Date lastUpdateTime)
    {
        this.lastUpdateTime = lastUpdateTime;
    }

    public Date getLastUpdateTime()
    {
        return lastUpdateTime;
    }

    public void setOperator(String operator)
    {
        this.operator = operator;
    }

    public String getOperator()
    {
        return operator;
    }

    public void setPhone(String phone)
    {
        this.phone = phone;
    }

    public String getPhone()
    {
        return phone;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("materialName", getMaterialName())
                .append("materialCategory", getMaterialCategory())
                .append("materialAbbr", getMaterialAbbr())
                .append("unit", getUnit())
                .append("specification", getSpecification())
                .append("isWeighable", getIsWeighable())
                .append("supplierId", getSupplierId())
                .append("minOrderQuantity", getMinOrderQuantity())
                .append("leadTimeDays", getLeadTimeDays())
                .append("status", getStatus())
                .append("remark", getRemark())
                .append("addTime", getAddTime())
                .append("lastUpdateTime", getLastUpdateTime())
                .append("operator", getOperator())
                .append("phone", getPhone())
                .toString();
    }
}
